const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');

// 定义根目录
const root = './';

http.createServer(function(req, res) {
    // 解析请求的URL
    const parsedUrl = url.parse(req.url, true);
    let filepath = '.' + parsedUrl.pathname;

    // 如果是访问根目录，则默认返回index.html
    if (filepath === './') {
        filepath = './login.html';
    }

    // 将相对路径转换为绝对路径
    const fullPath = path.join(__dirname, filepath);

    // 检查文件是否存在
    fs.exists(fullPath, function(exists) {
        if (exists) {
            // 读取文件并返回给客户端
            fs.readFile(fullPath, function(err, data) {
                if (err) {
                    res.writeHead(500);
                    return res.end('Sorry, check with the site admin for error: ' + err.message);
                }

                // 根据文件类型设置Content-Type
                let contentType = 'text/html';
                switch (path.extname(fullPath)) {
                    case '.js':
                        contentType = 'text/javascript';
                        break;
                    case '.css':
                        contentType = 'text/css';
                        break;
                    case '.json':
                        contentType = 'application/json';
                        break;
                    case '.png':
                        contentType = 'image/png';
                        break;
                    case '.jpg':
                        contentType = 'image/jpg';
                        break;
                    case '.jpeg':
                        contentType = 'image/jpeg';
                        break; // 增加jpeg支持
                    // 可以添加更多文件类型的处理
                }

                res.writeHead(200, {'Content-Type': contentType});
                res.end(data);
            });
        } else {
            // 文件不存在，返回404页面
            fs.readFile(path.join(root, '404.html'), function(err, data) {
                if (err) {
                    res.writeHead(500);
                    return res.end('Sorry, check with the site admin for error: ' + err.message);
                }
                res.writeHead(404, {'Content-Type': 'text/html'});
                res.end(data);
            });
        }
    });
}).listen(8000);

console.log('Server running at http://localhost:8000/');